﻿using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SharePoint;
using System.IO;

namespace Bartomolina.SharePoint.SPBM.OneStepImage
{
    class OneStepImageUtil
    {
        /// <summary>
        /// Determina si el fichero existe en el directorio, y si es así, devuelve un nombre alternativo
        /// </summary>
        /// <param name="nombreFichero"></param>
        /// <returns></returns>
        public static string ObtenerNombreFichero(string nombreFichero, SPFolder directorio)
        {
            string ficheroResultado = nombreFichero;
            int indice = 1;
            SPFile fichero = null;

            //obtenemos el nombre del archivo sin la extensión y la extensión para generar los nuevos nombres
            string archivoSinExtension = Path.GetFileNameWithoutExtension(nombreFichero);
            string extension = Path.GetExtension(nombreFichero);

            using (SPWeb web = directorio.ParentWeb)
            {
                //iteramos mientras no encontremos un nombre de fichero que no exista
                do
                {
                    string ruta = directorio.Url + "/" + ficheroResultado;
                    fichero = web.GetFile(ruta);

                    //si el fichero no existe devolvemos la cadena
                    if (fichero == null || !fichero.Exists)
                    {
                        break;
                    }
                    //si el fichero existe, probamos un nuevo nombre
                    else
                    {
                        ficheroResultado = String.Concat(archivoSinExtension, "(" + indice + ")", extension);
                        indice++;
                    }
                } while (true);
            }

            return ficheroResultado;
        }
    }
}
